// pages/home/home.js
import Toast from '../../miniprogram_npm/@vant/weapp/toast/toast'
import {getTab,getArticles,getChannel,deletechannels,patchchannels} from '../../api/home'
Page({

  data: {
// tab列表
active:0,
tabList:[],
tabLists:[],
flag:false,
txt:'',
// 渲染参数
obj:{
  channel_id:0,
  page:1,
  timestamp:Date.now()
},
// 渲染列表
dataList:[],
// 上拉时间戳
pre_timestamp:null,
// 触底状态
loading:true,
// 弹出侧开关
show:false,
// 弹出成编辑开关
popupFlag:false,
  },


// 获取tab列表
async getTabList(){
const res = await getTab()
// console.log(res);
this.setData({
  tabList:res.data.channels
})
},
// 获取推荐列表
async initgetArticles(){
  this.setData({
    'obj.timestamp': Date.now()
  })
try {
  const res =  await getArticles(this.data.obj)
  //  console.log(res);
   this.setData({
    dataList:[...this.data.dataList,...res.data.results],
    pre_timestamp:res.data.pre_timestamp
   })
} catch (error) {
  this.setData({
    loading:false
  })
}

},
// tab改变
tabsChange(e){
  // console.log(e.detail.name);
  this.setData({
    'obj.channel_id':e.detail.name,
    dataList:[],
    
  })
  this.initgetArticles()
},
// 下拉
pulling(){
this.setData({
  txt:'释放即可刷新...'
})
},
async refresh(){
  this.setData({
    txt:'加载中...',
    dataList:[]
  })
// 通过loading来判断是否错误
await this.initgetArticles()
   if (this.data.loading) {
    this.setData({
      txt:'刷新成功',
    }) 
   } else{
    this.setData({
      txt:'刷新失败,稍后再试',
    }) 
   }
    setTimeout(() => {
  this.setData({
    flag:false
  })
   }, 1000);
},
// 上拉触底
 tolower(){
  // 防止出错触底发请求
  if (!this.data.loading) return
 
  this.initgetArticles()
  this.setData({
    'obj.timestamp':this.data.pre_timestamp,
    loading:true
  })
},
// 点击重试
click(){
  // 打开开关
  this.setData({
    loading:true
  })
  this.tolower()
},
// 搜索
gosearch(){
  wx.navigateTo({
    url: '/pages/search/search',
  });
},

// ____________________________
// 打开频道列表
async openchannels(){
 const res = await getChannel()
 const arr = []
 res.data.channels.forEach(item=> {
  const f = this.data.tabList.some(itemevery=> {
   return item.id === itemevery.id
  })
  if(!f){
    arr.push(item)
  }
})
// console.log(arr);
this.setData({
  tabLists:arr
})
},
// 打开弹出层
showPopup() {
  this.openchannels()
  this.setData({ show: true });
},
// 关闭弹出层
  onClose() {
    this.setData({ show: false });
  },

  // 编辑+完成
  onPopupFlag(){
    this.setData({ popupFlag: !this.data.popupFlag });
  },
// 删除按钮
  async delbutton(e){
  const id = e.currentTarget.dataset.requestid
  const index = e.currentTarget.dataset.id
  if(this.data.popupFlag) {
  if(id===0) return
try {
  await deletechannels(id)
  Toast.success({
    duration: 1000,
    message: '删除成功'
  });
 const add = this.data.tabList.splice(index,1)
  this.setData({
    tabList:this.data.tabList,
    tabLists:[...this.data.tabLists,...add]
  })
} catch (error) {
  Toast.fail({
    duration: 1000,
    message: '删除失败'
  });
}  
}else{
    this.setData({ show: false });
    this.setData({
      'obj.channel_id':id,
      active:id,
      dataList:[],
      
    })
    this.initgetArticles()
  }
},
// 添加按钮
async addbutton(e){
  const id = e.currentTarget.dataset.requestid
  const index = e.currentTarget.dataset.id
try {
  await patchchannels({channels:[{id:id,seq:index}]})
  Toast.success({
   duration: 1000,
   message: '添加成功'
 });
   const add = this.data.tabLists.splice(index,1)
   this.setData({
     tabLists:this.data.tabLists,
     tabList:[...this.data.tabList,...add]
   })
} catch (error) {
  Toast.fail({
    duration: 1000,
    message: '添加失败'
  });
}
},

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
   
   this.initgetArticles()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getTabList()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})